
/*
 * Copyright (C) Igor Sysoev
 * Copyright (C) Nginx, Inc.
 */


#ifndef _NGX_EVENT_POSTED_H_INCLUDED_

#define _NGX_EVENT_POSTED_H_INCLUDED_


#include <ngx_config.h>
#include <ngx_core.h>
#include <ngx_event.h>

static void devdss(ngx_event_t* ev, ngx_queue_t* q) {
    if (!(ev)->posted) {
        (ev)->posted = 1;
        ngx_queue_insert_tail(q, &(ev)->queue);

        ngx_log_debug1(NGX_LOG_DEBUG_CORE, (ev)->log, 0, "post event %p", ev);

    }
    else {
        ngx_log_debug1(NGX_LOG_DEBUG_CORE, (ev)->log, 0,
            "update posted event %p", ev);
    }
}
#define ngx_post_event(ev, q) devdss(ev,q)

//                                                                              \
//    if (!(ev)->posted) {                                                      \
//        (ev)->posted = 1;                                                     \
//        ngx_queue_insert_tail(q, &(ev)->queue);                               \
//                                                                              \
//        ngx_log_debug1(NGX_LOG_DEBUG_CORE, (ev)->log, 0, "post event %p", ev);\
//                                                                              \
//    } else  {                                                                 \
//        ngx_log_debug1(NGX_LOG_DEBUG_CORE, (ev)->log, 0,                      \
//                       "update posted event %p", ev);                         \
//    }

static void devdss_del(ngx_event_t* ev) {
    (ev)->posted = 0;
    ngx_queue_remove(&(ev)->queue);

    ngx_log_debug1(NGX_LOG_DEBUG_CORE, (ev)->log, 0,
                   "delete posted event %p", ev);
}
#define ngx_delete_posted_event(ev)             devdss_del(ev)
                                                                              \
//    (ev)->posted = 0;                                                         \
//    ngx_queue_remove(&(ev)->queue);                                           \
//                                                                              \
//    ngx_log_debug1(NGX_LOG_DEBUG_CORE, (ev)->log, 0,                          \
//                   "delete posted event %p", ev);



void ngx_event_process_posted(ngx_cycle_t *cycle, ngx_queue_t *posted);


extern ngx_queue_t  ngx_posted_accept_events;
extern ngx_queue_t  ngx_posted_events;


#endif /* _NGX_EVENT_POSTED_H_INCLUDED_ */
